package com.ruoyi.system.utils;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * Created On : 2024/4/11.
 * Author : xuliang
 * Description: DateDiffUtils
 * <p>
 */
public class DateDiffUtils {

    public static long calculateMonthDifference(LocalDate startDate, LocalDate endDate) {
        // 计算年份差和月份差
        long yearDiff = endDate.getYear() - startDate.getYear();
        long monthDiff = endDate.getMonthValue() - startDate.getMonthValue();

        // 如果月份差为负数，则需要向年份差中减去1，并计算实际月份差
        if (monthDiff < 0) {
            yearDiff--;
            monthDiff = 12 - Math.abs(monthDiff);
        }

        // 计算月份总差
        return yearDiff * 12 + monthDiff;
    }

    // 如果需要计算当前时间与某个时间的月份差，可以使用这个重载的方法
    public static long calculateMonthDifferenceFromNow(LocalDate startDate) {
        LocalDate endDate = LocalDate.now();
        return calculateMonthDifference(startDate, endDate);
    }

    // 如果需要计算当前时间与某个时间的月份差，可以使用这个重载的方法
    public static long calculateMonthDifferenceFromNow(LocalDateTime startDateTime) {
        LocalDateTime endDateTime = LocalDateTime.now();
        return calculateMonthDifference(startDateTime.toLocalDate(), endDateTime.toLocalDate());
    }

}
